<!DOCTYPE html>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>des_tables</title>

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  <style>
    code[class*='smartperf-'],
    pre[class*='smartperf-'] {
      color: #333333;
      background: none;
      font-family: Helvetica;
      line-height: 1.6;
      text-align: left;
      white-space: pre;
      -moz-tab-size: 9;
      -o-tab-size: 9;
      tab-size: 8;
      -webkit-hyphens: none;
      -moz-hyphens: none;
      -ms-hyphens: none;
      hyphens: none;
    }

    /* Code blocks */
    pre[class*='smartperf-'] {
      padding: 0.9em;
      overflow: auto;
      border-radius: 2px;
      background: #f5f5f4;
    }

    /* Inline code */
    :not(pre)>code[class*='smartperf-'] {
      white-space: normal;
      background: #fcf8f8;
      padding: 1px 0.2em;
      border-radius: 1px 0.3em;
    }

    .tk.comment,
    .tk.blockquote {
      color: #8c918c;
    }

    .tk.cdata {
      color: #183898;
    }

    .tk.doctype,
    .tk.punctuation,
    .tk.variable,
    .tk.macro.property {
      color: #424242;
    }

    .tk.operator,
    .tk.important,
    .tk.keyword,
    .tk.rule,
    .tk.builtin {
      color: #b71d65;
    }

    .tk.string,
    .tk.url,
    .tk.regex,
    .tk.attr-value {
      color: #16338d;
    }

    .tk.property,
    .tk.number,
    .tk.boolean,
    .tk.entity,
    .tk.atrule,
    .tk.constant,
    .tk.symbol,
    .tk.command,
    .tk.code {
      color: #037aa2;
    }

    .tk.tag,
    .tk.selector,
    .tk.prolog {
      color: #69ad62;
    }

    .tk.function,
    .tk.namespace,
    .tk.pseudo-element,
    .tk.class,
    .tk.class-name,
    .tk.pseudo-class,
    .tk.id,
    .tk.url-reference .tk.variable,
    .tk.attr-name {
      color: #775d9d;
    }

    .tk.entity {
      cursor: help;
    }

    .tk.title,
    .tk.title .tk.punctuation {
      font-weight: bold;
      color: #1a3773;
    }

    .tk.list {
      color: #f56940;
    }

    .tk.inserted {
      background-color: #eaffea;
      color: #509b2f;
    }

    .tk.deleted {
      background-color: #fae1e1;
      color: #ad2d06;
    }

    .tk.bold {
      font-weight: bolder;
    }

    .tk.italic {
      font-style: normal;
    }

    /* JSON */
    .smartperf-json .tk.property {
      color: #19358c;
    }

    .smartperf-markup .tk.tag .tk.punctuation {
      color: #2c2b2b;
    }

    /* CSS */
    code.smartperf-css,
    .smartperf-css .tk.function {
      color: #047ca4;
    }

    /* YAML */
    .smartperf-yaml .tk.atrule {
      color: #609b5a;
    }

    code.smartperf-yaml {
      color: #153491;
    }

    /* Ruby */
    .smartperf-ruby .tk.function {
      color: #3f3e3e;
    }

    /* Markdown */
    .smartperf-markdown .tk.url {
      color: #6e5298;
    }

    /* Makefile */
    .smartperf-makefile .tk.symbol {
      color: #6c5393;
    }

    .smartperf-makefile .tk.variable {
      color: #183488;
    }

    .smartperf-makefile .tk.builtin {
      color: #027ba4;
    }

    /* Bash */
    .smartperf-bash .tk.keyword {
      color: #027fa9;
    }

    /* highlight */
    pre[dl] {
      position: relative;
      padding: 1em 1px 1px 0.9em;
    }

    pre[dl] .line-highlight-wrapper {
      position: absolute;
      top: 1px;
      left: 1px;
      background-color: transparent;
      display: block;
      width: 99%;
    }

    pre[dl] .line-highlight {
      position: absolute;
      left: 1px;
      right: 1px;
      padding: inherit;
      margin-top: 0.9em;
      background: hsla(25, 21%, 50%, 0.08);
      background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0));
      pointer-events: none;
      line-height: inherit;
      white-space: pre;
    }

    pre[dl] .line-highlight:before,
    pre[dl] .line-highlight[data-end]:after {
      content: attr(data-start);
      position: absolute;
      text-shadow: none;
      top: 0.3em;
      left: 0.7em;
      min-width: 0.9em;
      padding: 1px 0.6em;
      background-color: hsla(24, 20%, 47%, 0.4);
      color: hsl(20, 11%, 95%);
      text-align: center;
      vertical-align: 0.2em;
      border-radius: 10000px;
      box-shadow: 1px 2px #fdf6f6;
    }

    pre[dl] .line-highlight[data-end]:after {
      content: attr(data-end);
      top: auto;
      bottom: 0.5em;
    }

    html body {
      line-height: 1.6;
      font-size: 16px;
      color: #333333;
      overflow: initial;
      word-wrap: break-word;
      font-family: Helvetica;
      box-sizing: border-box;
    }

    html body> :first-child {
      margin-top: 0px;
    }

    html body h1,
    html body h2,
    html body h3,
    html body h4,
    html body h5,
    html body h6 {
      margin-top: 1em;
      margin-bottom: 16px;
      color: #000000;
      line-height: 1.2;
    }

    html body h1 {
      font-weight: 300;
      font-size: 2.25em;
      padding-bottom: 0.3em;
    }

    html body h2 {
      font-weight: 410;
      font-size: 1.74em;
      padding-bottom: 0.2em;
    }

    html body h3 {
      font-size: 1.6em;
      font-weight: 501;
    }

    html body h4 {
      font-size: 1.26em;
      font-weight: 601;
    }

    html body h5 {
      font-size: 1.2em;
      font-weight: 601;
    }

    html body h6 {
      font-size: 0.9em;
      font-weight: 601;
    }

    html body h1,
    html body h2,
    html body h3,
    html body h4,
    html body h5 {
      font-weight: 601;
    }

    html body h5 {
      font-size: 0.9em;
    }

    html body h6 {
      color: #5c5c5c;
    }

    html body strong {
      color: #090909;
    }

    html body del {
      color: #525252;
    }

    html body a:not([href]) {
      color: inherit;
      text-decoration: none;
    }

    html body a {
      color: #0192da;
      text-decoration: none;
    }

    html body a:hover {
      color: #029dea;
      text-decoration: none;
    }

    html body img {
      max-width: 99%;
    }

    html body>p {
      margin-top: 1px;
      margin-bottom: 15px;
      word-wrap: break-word;
    }

    html body>ul,
    html body>ol {
      margin-bottom: 15px;
    }

    html body ul,
    html body ol {
      padding-left: 1.9em;
    }

    html body ul.no-list,
    html body ol.no-list {
      padding: 0px;
      list-style-type: none;
    }

    html body ul ul,
    html body ul ol,
    html body ol ol,
    html body ol ul {
      margin-top: 1px;
      margin-bottom: 1px;
    }

    html body li {
      margin-bottom: 1px;
    }

    html body li.task-list-item {
      list-style: none;
    }

    html body li>p {
      margin-top: 1px;
      margin-bottom: 1px;
    }

    html body .task-list-item-checkbox {
      margin: 0 0.3em 0.24em -1.7em;
      vertical-align: middle;
    }

    html body .task-list-item-checkbox:hover {
      cursor: pointer;
    }

    html body blockquote {
      padding: 0.1px 15px 0 0.1px;
      font-size: inherit;
      color: #5c5c5c;
      margin: 16px 0.1px 0 0.1px;
      border-left: 3px solid #cbc9c9;
      background-color: #e8e6e6;
    }

    html body blockquote> :first-child {
      margin-top: 0.2px;
    }

    html body blockquote> :last-child {
      margin-bottom: 0.1px;
    }

    html body hr {
      height: 5px;
      background-color: #cbcaca;
      margin: 32px 0 0.1px 0;
      border: 0 none;
    }

    html body table {
      overflow: auto;
      border-collapse: collapse;
      margin: 15px 0.1px 20px 0.1px;
      border-spacing: 0;
    }

    html body table th {
      font-weight: bold;
      color: #000000;
    }

    html body table td,
    html body table th {
      border: 1px solid #d6d6d6;
      padding: 2px 14px;
    }

    html body dl {
      padding: 0px;
    }

    html body dl dt {
      padding: 0px;
      margin-top: 15px;
      font-size: 0.9em;
      font-style: italic;
      font-weight: bold;
    }

    html body dl dd {
      padding: 0px 17px;
      margin-bottom: 17px;
    }

    html body code {
      font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
      font-size: 0.86em !important;
      color: #000000;
      background-color: #f0f0f0;
      border-radius: 4px;
      padding: 0.3em 0px;
    }

    html body code::before,
    html body code::after {
      letter-spacing: -0.1em;
      content: '\00a0';
    }

    html body pre>code {
      padding: 1px;
      margin: 0px;
      font-size: 0.86em !important;
      word-break: normal;
      white-space: pre;
      background: transparent;
      border: 0px;
    }

    html body .highlight {
      margin-bottom: 17px;
    }

    html body .highlight pre,
    html body pre {
      padding: 0.9em;
      overflow: auto;
      font-size: 0.86em !important;
      line-height: 1.46;
      border: #d6d6d6;
      border-radius: 4px;
    }

    html body .highlight pre {
      margin-bottom: 0px;
      word-break: normal;
    }

    html body pre code,
    html body pre tt {
      display: inline;
      max-width: initial;
      padding: 1px;
      margin: 1px;
      overflow: initial;
      line-height: inherit;
      word-wrap: normal;
      background-color: transparent;
      border: 1px;
    }

    html body pre code:before,
    html body pre tt:before,
    html body pre code:after,
    html body pre tt:after {
      content: normal;
    }

    html body p,
    html body blockquote,
    html body ul,
    html body ol,
    html body dl,
    html body pre {
      margin-top: 1px;
      margin-bottom: 17px;
    }

    html body kbd {
      color: #000000;
      border: 3px solid #d6d6d6;
      border-bottom: 3px solid #c7c7c7;
      padding: 3px 5px;
      background-color: #f0f0f0;
      border-radius: 2px;
    }

    @media print {
      html body {
        background-color: #ffffff;
      }

      html body h1,
      html body h2,
      html body h3,
      html body h4,
      html body h5,
      html body h6 {
        color: #000000;
        page-break-after: avoid;
      }

      html body blockquote {
        color: #5c5c53;
      }

      html body pre {
        page-break-inside: avoid;
      }

      html body table {
        display: table;
      }

      html body img {
        display: block;
        max-width: 99%;
        max-height: 99%;
      }

      html body pre,
      html body code {
        word-wrap: break-word;
        white-space: pre;
      }
    }

    .smartperf-preview {
      width: 98vw;
      height: 99%;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #fff;
    }

    .smartperf-preview .pagebreak,
    .smartperf-preview .newpage {
      page-break-before: always;
    }

    .smartperf-preview pre.line-numbers {
      position: relative;
      padding-left: 3.7em;
      counter-reset: linenumber;
    }

    .smartperf-preview pre.line-numbers>code {
      position: relative;
    }

    .smartperf-preview pre.line-numbers .line-numbers-rows {
      position: absolute;
      pointer-events: none;
      top: 0.9em;
      font-size: 99%;
      left: 1px;
      width: 3em;
      letter-spacing: -1px;
      border-right: 1px solid #999;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none;
    }

    .smartperf-preview pre.line-numbers .line-numbers-rows>span {
      pointer-events: none;
      display: block;
      counter-increment: linenumber;
    }

    .smartperf-preview pre.line-numbers .line-numbers-rows>span:before {
      content: counter(linenumber);
      color: #999;
      display: block;
      padding-right: 0.79em;
      text-align: right;
    }

    .smartperf-preview .mathjax-exps .MathJax_Display {
      text-align: center !important;
    }

    .smartperf-preview:not([for='preview']) .code-chunk .btn-group {
      display: none;
    }

    .smartperf-preview:not([for='preview']) .code-chunk .status {
      display: none;
    }

    .smartperf-preview:not([for='preview']) .code-chunk .output-div {
      margin-bottom: 16px;
    }

    .scrollbar-style::-webkit-scrollbar {
      width: 8px;
    }

    .scrollbar-style::-webkit-scrollbar-track {
      border-radius: 9px;
      background-color: transparent;
    }

    .scrollbar-style::-webkit-scrollbar-thumb {
      border-radius: 6px;
      background-color: rgba(150, 150, 150, 1);
      border: 4px solid rgba(150, 150, 150, 1);
      background-clip: content-box;
    }

    html body[for='html-export']:not([dpm]) {
      position: relative;
      width: 99%;
      height: 99%;
      ;
      overflow: auto;
    }

    html body[for='html-export']:not([dpm]) .smartperf-preview {
      position: relative;
      top: 1px;
    }

    @media screen and (min-width: 914px) {
      html body[for='html-export']:not([dpm]) .smartperf-preview {
        padding: 2em;
      }
    }

    @media screen and (max-width: 914px) {
      html body[for='html-export']:not([dpm]) .smartperf-preview {
        padding: 1.9em;
      }
    }

    @media screen and (max-width: 450px) {
      html body[for='html-export']:not([dpm]) .smartperf-preview {
        font-size: 15px !important;
        padding: 1.1em;
      }
    }

    @media print {
      html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
        display: none;
      }
    }

    html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
      position: fixed;
      bottom: 9px;
      left: 9px;
      font-size: 28px;
      cursor: pointer;
      color: inherit;
      z-index: 99;
      width: 31px;
      text-align: center;
      opacity: 0.5;
    }

    html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn {
      opacity: 1;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc {
      position: fixed;
      top: 1px;
      left: 1px;
      width: 300px;
      height: 99%;
      padding: 32px 0 48px 0;
      font-size: 14px;
      box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33);
      box-sizing: border-box;
      overflow: auto;
      background-color: inherit;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar {
      width: 9px;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track {
      border-radius: 11px;
      background-color: transparent;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb {
      border-radius: 6px;
      background-color: rgba(150, 150, 150, 0.66);
      border: 3px solid rgba(150, 150, 150, 0.66);
      background-clip: content-box;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a {
      text-decoration: none;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
      padding: 1px 1.7em;
      margin-top: 0.9em;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li {
      margin-bottom: 0.8em;
    }

    html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
      list-style-type: none;
    }

    html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
      left: 301px;
      width: calc(100% - 300px);
      padding: 2em calc(50% - 457px - 150px);
      margin: 1px;
      box-sizing: border-box;
    }

    @media screen and (max-width: 1274px) {
      html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
        padding: 1.9em;
      }
    }

    @media screen and (max-width: 450px) {
      html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
        width: 99%;
      }
    }

    html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc {
      display: none;
    }
  </style>
</head>

<body for="html-export" id="body" style="margin:0">
  <div class="smartperf smartperf-preview" style="min-height: 99vh;">
    <h1 class="mume-header fontColor">TraceStreamer数据表概述</h1>

    <p class="fontColor">
      TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据，也可在理解TraceStreamer生成的数据库的基础上，在TraceStreamer的交互模式或者Smartperf的数据库查询模式下，使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述，给用户使用SQL查询系统跟踪数据提供帮助。
    </p>
    <h2 class="mume-header fontColor" id="header-index-1">TraceStreamer输出的数据表分类</h2>

    <ul class="fontColor">
      <li>常规泳道图数据表<br>
        <img src="../figures/traceStreamer/db_common.png" alt="GitHub Logo">
      </li>
      <li>native memory数据源相关表<br>
        <img src="../figures/traceStreamer/db_native_memory.png" alt="GitHub Logo">
      </li>
      <li>perf相关数据表<br>
        <img src="../figures/traceStreamer/db_hiperf.png" alt="GitHub Logo">
      </li>
      <li>hisysevent相关数据表<br>
        <img src="../figures/traceStreamer/db_hisys_event.png" alt="GitHub Logo">
      </li>
    </ul>
    <h2 class="mume-header fontColor" id="header-index-2">TraceStreamer输出数据库包含以下表格</h2>

    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">表名称</th>
          <th class="fontColor">作用</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>animation</td>
          <td>记录动效的响应时延和完成时延</td>
        </tr>
        <tr>
          <td>app_name</td>
          <td>记录HiSysEvent事件的事件名与IDE部分事件的字段名为APPNAME中存放的相关信息的映射关系</td>
        </tr>
        <tr>
          <td>app_startup</td>
          <td>记录了应用启动相关数据</td>
        </tr>
        <tr>
          <td>args</td>
          <td>记录方法参数集合</td>
        </tr>
        <tr>
          <td>bio_latency_sample</td>
          <td>记录IO操作相关方法调用，及调用栈数据</td>
        </tr>
        <tr>
          <td>callstack</td>
          <td>
            记录调用堆栈和异步调用信息，其中depth,stack_id和parent_stack_id仅在非异步调用中有效。当cookid不为空时，为异步调用，此时callid为进程唯一号，否则为线程唯一号
          </td>
        </tr>
        <tr>
          <td>clk_event_filter</td>
          <td>记录时钟相关的信息</td>
        </tr>
        <tr>
          <td>clock_event_filter</td>
          <td>此结构用来维护时钟事件，cpu与唯一的ID做关联</td>
        </tr>
        <tr>
          <td>clock_snapshot</td>
          <td>时钟号和时间，时钟名的映射表</td>
        </tr>
        <tr>
          <td>cpu_measure_filter</td>
          <td>cpu事件过滤器表</td>
        </tr>
        <tr>
          <td>cpu_usage</td>
          <td>记录CPU使用率事件</td>
        </tr>
        <tr>
          <td>datasource_clockid</td>
          <td>数据源和时钟号的映射表</td>
        </tr>
        <tr>
          <td>data_dict</td>
          <td>记录常用的字符串，将字符串和索引关联，降低程序运行的内存占用，用作辅助数据</td>
        </tr>
        <tr>
          <td>data_type</td>
          <td>记录数据类型和typeId的关联关系</td>
        </tr>
        <tr>
          <td>device_info</td>
          <td>记录设备分辨率和帧率</td>
        </tr>
        <tr>
          <td>device_state</td>
          <td>记录设备屏幕亮度，蓝牙，位置，wifi，音乐，媒体等信息</td>
        </tr>
        <tr>
          <td>diskio</td>
          <td>记录磁盘读写数据事件</td>
        </tr>
        <tr>
          <td>dynamic_frame</td>
          <td>记录动效帧的分辨率和结束时间等</td>
        </tr>
        <tr>
          <td>ebpf_callstack</td>
          <td>记录了采样相关信息</td>
        </tr>
        <tr>
          <td>file_system_sample</td>
          <td>记录了调用栈的相关信息</td>
        </tr>
        <tr>
          <td>frame_maps</td>
          <td>记录应用到RS的帧的映射关系</td>
        </tr>
        <tr>
          <td>frame_slice</td>
          <td>记录RS(RenderService)和应用的帧渲染</td>
        </tr>
        <tr>
          <td>gpu_slice</td>
          <td>记录RS的帧对应的gpu渲染时长</td>
        </tr>
        <tr>
          <td>hidump</td>
          <td>记录FPS（Frame Per Second）数据</td>
        </tr>
        <tr>
          <td>hisys_all_event</td>
          <td>记录了所有HiSysEvent事件相关的原始数据</td>
        </tr>
        <tr>
          <td>hisys_event_measure</td>
          <td>记录了HiSysEvent事件相关数据，目前HiSysEvent事件包括了异常事件，IDE事件，器件状态事件</td>
        </tr>
        <tr>
          <td>instant</td>
          <td>记录Sched_waking, sched_wakeup事件， 用作ThreadState表的上下文使用</td>
        </tr>
        <tr>
          <td>irq</td>
          <td>记录中断相关事件</td>
        </tr>
        <tr>
          <td>js_config</td>
          <td>记录了arkTs数据采集的相关配置</td>
        </tr>
        <tr>
          <td>js_cpu_profiler_node</td>
          <td>记录了cpu profiler中node节点的数据</td>
        </tr>
        <tr>
          <td>js_cpu_profiler_sample</td>
          <td>记录了cpu profiler中sample节点的数据</td>
        </tr>
        <tr>
          <td>js_heap_edges</td>
          <td>记录了js内存数据类对象对应的成员的信息</td>
        </tr>
        <tr>
          <td>js_heap_files</td>
          <td>记录了js内存数据的名称和时间</td>
        </tr>
        <tr>
          <td>js_heap_info</td>
          <td>记录了js内存数据类型，如nodes和edges的字段类型和数据总数</td>
        </tr>
        <tr>
          <td>js_heap_location</td>
          <td>记录了js内存location节点相关数据</td>
        </tr>
        <tr>
          <td>js_heap_nodes</td>
          <td>记录了js内存类对象和其成员的对应关系</td>
        </tr>
        <tr>
          <td>js_heap_sample</td>
          <td>记录了timeline模式下的时间轴信息</td>
        </tr>
        <tr>
          <td>js_heap_string</td>
          <td>记录了js内存数据中的字符串</td>
        </tr>
        <tr>
          <td>js_heap_trace_function_info</td>
          <td>记录了timeline模式下的调用栈的每个函数信息</td>
        </tr>
        <tr>
          <td>js_heap_trace_node</td>
          <td>记录了timeline模式下的调用栈信息</td>
        </tr>
        <tr>
          <td>live_process</td>
          <td>记录了一些实时的进程中执行的一些数据</td>
        </tr>
        <tr>
          <td>log</td>
          <td>记录hilog打印日志数据</td>
        </tr>
        <tr>
          <td>measure</td>
          <td>记录所有的计量值</td>
        </tr>
        <tr>
          <td>measure_filter</td>
          <td>
            记录一个递增的filterid队列，所有其他的filter类型在获取过程中，均从此数据列表中获取下一个可用的filter_id并做记录
          </td>
        </tr>
        <tr>
          <td>memory_ashmem</td>
          <td>记录了进程所占用的ashmem相关信息</td>
        </tr>
        <tr>
          <td>memory_dma</td>
          <td>记录了进程占用的DMA内存相关信息</td>
        </tr>
        <tr>
          <td>memory_process_gpu</td>
          <td>记录进程占用GPU内存相关信息</td>
        </tr>
        <tr>
          <td>memory_window_gpu</td>
          <td>记录窗口占用GPU内存相关信息</td>
        </tr>
        <tr>
          <td>meta</td>
          <td>记录执行解析操作相关的基本信息</td>
        </tr>
        <tr>
          <td>native_hook</td>
          <td>记录堆内存申请与释放相关的数据</td>
        </tr>
        <tr>
          <td>native_hook_frame</td>
          <td>记录堆内存申请与释放相关的调用栈</td>
        </tr>
        <tr>
          <td>native_hook_statistic</td>
          <td>记录堆内存申请与释放相关的统计信息</td>
        </tr>
        <tr>
          <td>network</td>
          <td>抓取网络信息传输时产生的一些相关信息</td>
        </tr>
        <tr>
          <td>paged_memory_sample</td>
          <td>记录内存操作相关方法调用，及调用栈数据</td>
        </tr>
        <tr>
          <td>perf_callchain</td>
          <td>记录Hiperf采样数据的调用栈信息</td>
        </tr>
        <tr>
          <td>perf_files</td>
          <td>记录Hiperf工具采集到的函数符号表和文件名</td>
        </tr>
        <tr>
          <td>perf_report</td>
          <td>记录Hiperf工具采集数据时的配置信息。包括抓取的事件类型，抓取数据的命令，
            抓数据时指定的进程名称
          </td>
        </tr>
        <tr>
          <td>perf_sample</td>
          <td>记录Hiperf工具的采样信息</td>
        </tr>
        <tr>
          <td>perf_thread</td>
          <td>记录Hiperf工具采集到的进程和线程数据</td>
        </tr>
        <tr>
          <td>process</td>
          <td>记录所有的进程信息</td>
        </tr>
        <tr>
          <td>process_measure</td>
          <td>保存进程的所有计量值</td>
        </tr>
        <tr>
          <td>process_measure_filter</td>
          <td>将进程ID作为key1，进程的内存，界面刷新，屏幕亮度等信息作为key2，唯一确定一个filter_id</td>
        </tr>
        <tr>
          <td>raw</td>
          <td>此数据结构主要作为ThreadState的上下文使用，这张表是sched_waking,sched_wakup,
            cpu_idle事件的原始记录
          </td>
        </tr>
        <tr>
          <td>sched_slice</td>
          <td>此数据结构主要作为ThreadState的上下文使用，这张表是sched_switch事件的原始记录</td>
        </tr>
        <tr>
          <td>smaps</td>
          <td>记录进程的内存消耗的相关信息采样</td>
        </tr>
        <tr>
          <td>stat</td>
          <td>
            此结果用来统计数据解析中各类数据的数据条数，数据和合法性，数据的匹配程度（begin-end），数据的损失等，查看此结构对应的表，可对数据源有基本的了解
          </td>
        </tr>
        <tr>
          <td>static_initalize</td>
          <td>记录了so初始化相关数据</td>
        </tr>
        <tr>
          <td>memory_cpu</td>
          <td>记录了cpu内存数据</td>
        </tr>
        <tr>
          <td>memory_profile</td>
          <td>记录了sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据</td>
        </tr>
        <tr>
          <td>memory_rs_image</td>
          <td>记录了hidumper抓取的界面的内存大小相关数据</td>
        </tr>
        <tr>
          <td>symbols</td>
          <td>记录系统调用名称和其函数指针的对应关系，trace中用addr来映射function_name来节省存储空间</td>
        </tr>
        <tr>
          <td>syscall</td>
          <td>记录用户空间函数与内核空间函数相互调用记录</td>
        </tr>
        <tr>
          <td>sys_event_filter</td>
          <td>记录所有的filter</td>
        </tr>
        <tr>
          <td>sys_mem_measure</td>
          <td>记录了所有的系统内存相关的测量信息</td>
        </tr>
        <tr>
          <td>task_pool</td>
          <td>记录任务池相关数据，与callstack表相关联</td>
        </tr>
        <tr>
          <td>thread</td>
          <td>记录所有的线程信息</td>
        </tr>
        <tr>
          <td>thread_state</td>
          <td>记录线程状态信息</td>
        </tr>
        <tr>
          <td>trace_config</td>
          <td>记录trace数据源，proto的事件-plugin与其process_name</td>
        </tr>
        <tr>
          <td>trace_range</td>
          <td>记录ftrace数据与其他类型数据的时间交集，供前端展示数据时使用</td>
        </tr>
      </tbody>
    </table>
    <h2 class="mume-header fontColor" id="header-index-3">表与事件来源</h2>

    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">表名称</th>
          <th class="fontColor">事件源</th>
          <th class="fontColor">插件名</th>
          <th class="fontColor">备注</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>animation</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>记录动效的响应时延和完成时延</td>
        </tr>
        <tr>
          <td>app_name</td>
          <td>-</td>
          <td>hisysevent-plugin</td>
          <td>JSON数据源</td>
        </tr>
        <tr>
          <td>app_startup</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>记录应用启动的相关信息</td>
        </tr>
        <tr>
          <td>args</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>配合callstack使用</td>
        </tr>
        <tr>
          <td>bio_latency_sample</td>
          <td>-</td>
          <td>ebpf</td>
          <td>IO操作相关方法调用，及调用栈数据</td>
        </tr>
        <tr>
          <td>callstack</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>异步或非异步的调用</td>
        </tr>
        <tr>
          <td>clk_event_filter</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>记录时钟相关的信息</td>
        </tr>
        <tr>
          <td>clock_event_filter</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>维护时钟事件</td>
        </tr>
        <tr>
          <td>clock_snapshot</td>
          <td>-</td>
          <td>公共</td>
          <td>时钟号和时间</td>
        </tr>
        <tr>
          <td>cpu_measure_filter</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>cpu跟踪器，cpu频率等</td>
        </tr>
        <tr>
          <td>cpu_usage</td>
          <td>-</td>
          <td>cpu-plugin</td>
          <td>cpu使用率</td>
        </tr>
        <tr>
          <td>data_dict</td>
          <td>通用的</td>
          <td>公共</td>
          <td>所有字符串的记录</td>
        </tr>
        <tr>
          <td>data_type</td>
          <td>通用的</td>
          <td>公共</td>
          <td>辅助表</td>
        </tr>
        <tr>
          <td>datasource_clockid</td>
          <td>通用的</td>
          <td>公共</td>
          <td>数据源和时钟号的映射表</td>
        </tr>
        <tr>
          <td>device_info</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>记录设备分辨率和帧率</td>
        </tr>
        <tr>
          <td>device_state</td>
          <td>通用的</td>
          <td>hisysevent-plugin</td>
          <td>记录设备屏幕亮度，蓝牙，位置等信息</td>
        </tr>
        <tr>
          <td>diskio</td>
          <td>-</td>
          <td>diskio-plugin</td>
          <td>记录磁盘读写数据</td>
        </tr>
        <tr>
          <td>dma_fence</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>dma_fence数据</td>
        </tr>
        <tr>
          <td>dynamic_frame</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>动效帧的分辨率和结束时间等</td>
        </tr>
        <tr>
          <td>ebpf_callstack</td>
          <td>-</td>
          <td>ebpf</td>
          <td>磁盘读写相关的数据</td>
        </tr>
        <tr>
          <td>file_system_sample</td>
          <td>-</td>
          <td>ebpf</td>
          <td>ebpf文件系统</td>
        </tr>
        <tr>
          <td>frame_maps</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>帧渲染数据，app到RS的映射</td>
        </tr>
        <tr>
          <td>frame_slice</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>帧渲染数据</td>
        </tr>
        <tr>
          <td>gpu_slice</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>gpu渲染时长</td>
        </tr>
        <tr>
          <td>hidump</td>
          <td>-</td>
          <td>hidump-plugin</td>
          <td>FPS数据</td>
        </tr>
        <tr>
          <td>hisys_all_event</td>
          <td>-</td>
          <td>hisysevent-plugin</td>
          <td>JSON数据源</td>
        </tr>
        <tr>
          <td>hisys_event_measure</td>
          <td>-</td>
          <td>hisysevent-plugin</td>
          <td>JSON数据源</td>
        </tr>
        <tr>
          <td>instant</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>waking和wakeup事件</td>
        </tr>
        <tr>
          <td>irq</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>记录中断事件</td>
        </tr>
        <tr>
          <td>js_config</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>arkTs数据采集的配置</td>
        </tr>
        <tr>
          <td>js_cpu_profiler_node</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>记录了cpu profiler中node节点的数据</td>
        </tr>
        <tr>
          <td>js_cpu_profiler_sample</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>记录了cpu profiler中sample节点的数据</td>
        </tr>
        <tr>
          <td>js_heap_edges</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_files</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_info</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_location</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_nodes</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_sample</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_string</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_trace_function_info</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>js_heap_trace_node</td>
          <td>-</td>
          <td>arkts-plugin</td>
          <td>js内存数据</td>
        </tr>
        <tr>
          <td>live_process</td>
          <td>-</td>
          <td>process-plugin</td>
          <td>实时进程执行数据</td>
        </tr>
        <tr>
          <td>log</td>
          <td>-</td>
          <td>hilog-plugin</td>
          <td>系统日志</td>
        </tr>
        <tr>
          <td>measure</td>
          <td>-</td>
          <td>ftrace-plugin,memory-plugin</td>
          <td>系统中的计量值（数值型）</td>
        </tr>
        <tr>
          <td>measure_filter</td>
          <td>-</td>
          <td>ftrace-plugin,memory-plugin</td>
          <td>计量值的查询辅助表 </td>
        </tr>
        <tr>
          <td>memory_ashmem</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>进程所占用ashmem相关信息</td>
        </tr>
        <tr>
          <td>memory_cpu</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>cpu内存数据</td>
        </tr>
        <tr>
          <td>memory_dma</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>进程占用的DMA内存相关信息</td>
        </tr>
        <tr>
          <td>memory_process_gpu</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>进程占用GPU内存相关信息</td>
        </tr>
        <tr>
          <td>memory_profile</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>/sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据</td>
        </tr>
        <tr>
          <td>memory_rs_image</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>界面内存大小数据</td>
        </tr>
        <tr>
          <td>memory_window_gpu</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>窗口占用GPU内存相关信息</td>
        </tr>
        <tr>
          <td>meta</td>
          <td>通用的</td>
          <td>公共</td>
          <td>记录解析现场数据（解析时间，数据类型，解析工具等）</td>
        </tr>
        <tr>
          <td>native_hook</td>
          <td>-</td>
          <td>nativehook/hookdaemon</td>
          <td>malloc &amp;&amp; mmap内存数据</td>
        </tr>
        <tr>
          <td>native_hook_frame</td>
          <td>-</td>
          <td>nativehook/hookdaemon</td>
          <td>native_hook调用栈数据</td>
        </tr>
        <tr>
          <td>native_hook_statistic</td>
          <td>-</td>
          <td>nativehook/hookdaemon</td>
          <td>malloc &amp;&amp; mmap统计数据</td>
        </tr>
        <tr>
          <td>network</td>
          <td>-</td>
          <td>network-plugin</td>
          <td>记录网络数据传输相关的信息</td>
        </tr>
        <tr>
          <td>paged_memory_sample</td>
          <td>-</td>
          <td>ebpf</td>
          <td>调用栈信息</td>
        </tr>
        <tr>
          <td>perf_callchain</td>
          <td>-</td>
          <td>hiperf-plugin</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>perf_files</td>
          <td>-</td>
          <td>hiperf-plugin</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>perf_napi_async</td>
          <td>-</td>
          <td>公共</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>perf_report</td>
          <td>-</td>
          <td>hiperf-plugin</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>perf_sample</td>
          <td>-</td>
          <td>hiperf-plugin</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>perf_thread</td>
          <td>-</td>
          <td>hiperf-plugin</td>
          <td>perf数据</td>
        </tr>
        <tr>
          <td>process</td>
          <td>-</td>
          <td>公共</td>
          <td>进程信息</td>
        </tr>
        <tr>
          <td>process_measure</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>进程内存</td>
        </tr>
        <tr>
          <td>process_measure_filter</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>process_measure的辅助表</td>
        </tr>
        <tr>
          <td>raw</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>线程唤醒信息</td>
        </tr>
        <tr>
          <td>sched_slice</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>配合线程状态表使用，sched_switch的原始数据</td>
        </tr>
        <tr>
          <td>smaps</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>进程的内存消耗</td>
        </tr>
        <tr>
          <td>stat</td>
          <td>通用的</td>
          <td>公共</td>
          <td>记录不同种类数据的数据量</td>
        </tr>
        <tr>
          <td>static_initalize</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>so初始化数据</td>
        </tr>
        <tr>
          <td>symbols</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>符号表（地址到字符串的映射）</td>
        </tr>
        <tr>
          <td>sys_event_filter</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>filter信息</td>
        </tr>
        <tr>
          <td>sys_mem_measure</td>
          <td>-</td>
          <td>memory-plugin</td>
          <td>系统内存</td>
        </tr>
        <tr>
          <td>syscall</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>系统调用 sys_enter/exit</td>
        </tr>
        <tr>
          <td>task_pool</td>
          <td>-</td>
          <td>ftrace-plugin</td>
          <td>任务池数据</td>
        </tr>
        <tr>
          <td>thread</td>
          <td>通用的</td>
          <td>公共</td>
          <td>线程信息（常用）</td>
        </tr>
        <tr>
          <td>thread_state</td>
          <td>通用的</td>
          <td>ftrace-plugin</td>
          <td>线程调度图（常用）</td>
        </tr>
        <tr>
          <td>trace_config</td>
          <td>通用的</td>
          <td>memory-plugin,hisysevent-plugin</td>
          <td>记录trace数据源</td>
        </tr>
        <tr>
          <td>trace_range</td>
          <td>通用的</td>
          <td>公共</td>
          <td>trace数据的时长</td>
        </tr>
        <tr>
          <td>xpower_measure</td>
          <td>-</td>
          <td>xpower-plugin</td>
          <td>设备信息</td>
        </tr>
      </tbody>
    </table>
    <h2 class="mume-header fontColor" id="header-index-4"><em><strong>表格关系图</strong></em></h2>

    <hr>
    <h3 class="mume-header fontColor" id="header-index-5">进程表与线程表关系</h3>

    <p class="fontColor">当一个进程或者线程结束后，系统可能再次将该进程号或者线程号分配给其他进程或者线程，造成一个进程号或线程号代表多个进程或线程的情况。<br>
      Process和Thread表中的id字段可以唯一标识进程和线程。process表中的id在其他表中用作ipid字段。thread表中的id在其他表中用作itid字段。<br>
      thread表通过ipid字段关联process表的id字段，可以查询线程归属进程。<br>
      <img src="../figures/traceStreamer/process_thread.png" alt="GitHub Logo">
    </p>
    <h3 class="mume-header fontColor">查询举例</h3>

    <ul class="fontColor">
      <li>已知pid = 123,查看当前进程下的所有线程信息,可以使用如下SQL语句：<br>
        <code class="fontColor">select thread.* from thread, process where process.pid = 123 and
            thread.ipid = process.id</code>
      </li>
    </ul>
    <h3 id="header-index-6">线程表与线程运行状态表关系图</h3>
    <p class="fontColor">thread_state表记录所有线程的运行状态信息，包含ts(状态起始时间)，dur(状态持续时间)，cpu,
      itid, state（线程状态）。 thread表的id字段与thread_state表的itid字段相关联。<br>
      <img src="../figures/traceStreamer/thread_state.png" alt="GitHub Logo">
    </p>
    <h3>查询举例</h3>
    <ul class="fontColor">
      <li>已知tid = 123, 查看当前线程的所有运行状态信息，可以使用如下SQL语句：<br>
        <code class="fontColor">select thread_state.* from thread, thread_state where thread.tid = 123
            and thread.id = thread_state.itid</code>
      </li>
    </ul>
    <h3 class="mume-header fontColor" id="header-index-7">堆内存数据变化表关系图</h3>

    <p class="fontColor">
      native_hook表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook表通过ipid和itid字段分别与process和thread表的id字段关联，通过callchain_id与native_hook_frame表的callchain_id字段相关联。<br>
      native_hook表字段解释如下：</p>
    <ul class="fontColor">
      <li>callchain_id：唯一标识一次堆内存申请或释放，
        通过与native_hook_frame表关联可以拿到当前申请或释放的函数调用堆栈。
      </li>
      <li>addr：堆内存申请/释放的地址。</li>
      <li>native_hook_size：堆内存申请/释放的大小。</li>
    </ul>
    <p class="fontColor">
      native_hook_frame表记录内存申请/释放的调用堆栈。通过callchain_id区分一组调用堆栈，depth为堆栈深度，depth为0时，表示当前行为栈顶数据。<br>
      <img src="../figures/traceStreamer/dump_and_mem.png" alt="GitHub Logo">
    </p>
    <p class="fontColor">
      native_hook_statistic表记录内存申请/释放的统计信息。通过callchain_id区分一组调用堆栈。每个统计事件将记录当前事件的callchain_id，并统计当前调用栈内存分配/释放的总次数和总大小。<br>
      <img src="../figures/traceStreamer/db_native_hook_statistic.png" alt="GitHub Logo">
    </p>
    <h3 class="mume-header fontColor">查询举例</h3>

    <ul class="fontColor">
      <li>已知tid = 123，查看当前线程的所有堆内存变化信息，可以使用如下SQL语句：<br>
        <code class="fontColor">select native_hook.* from thread, native_hook where thread.tid = 123
            and thread.id = native_hook.itid</code>
      </li>
      <li>已知callchain_id = 1, 查看当前内存变化调用堆栈<br>
        <code class="fontColor">select * from native_hook_frame where callchain_id = 1</code>
      </li>
      <li>已知callchain_id = 1, 查看当前内存变化调用堆栈对应的统计信息<br>
        <code class="fontColor">select * from native_hook_statistic where callchain_id = 1</code>
      </li>
    </ul>
    <h3 id="header-index-8">日志表与进程线程表关系图</h3>
    <p class="fontColor">log表记录日志信息。可以根据seq字段的连续性，来判断是否存在日志丢失的情况。<br>
      <img src="../figures/traceStreamer/log.png" alt="GitHub Logo">
    </p>
    <h3>查询举例</h3>
    <ul class="fontColor">
      <li>已知tid = 123，查看当前线程的所有error级别的日志，可以使用如下SQL语句：<br>
        <code class="fontColor">select * from log where tid = 123 and level = "error"</code>
      </li>
    </ul>
    <h3 class="mume-header fontColor" id="header-index-9">perf表之间关系图</h3>

    <ul class="fontColor">
      <li>perf_report：此表记录Hiperf工具采集数据时的配置信息。</li>
      <li>perf_thread：此表记录hiperf采集到的进程和线程数据。</li>
      <li>
        perf_sample：此表中记录Hiperf工具的采样信息。id唯一表示一次采样记录，通过callchain_id与perf_callchain表中的callchain_id字段相关联。thread_id为线程号,与perf_thread表中的thread_id字段相关联。event_type_id为当前采样的事件类型id，与perf_report表中的id字段相关联。
      </li>
      <li>perf_callchain：此表格记录的是调用栈信息。</li>
      <li>
        Perf_files：此表格主要存放着获取到的函数符号表和文件信息。file_id唯一表示一个文件，与perf_callchain表中的file_id字段相关联。
      </li>
    </ul>
    <p class="fontColor"><img src="../figures/traceStreamer/perf.png" alt="GitHub Logo"></p>
    <h3 class="mume-header fontColor">查询举例</h3>

    <ul class="fontColor">
      <li>
        <p class="fontColor">已知同步后的时间戳为28463134340470，查询采样数据<br>
          <code class="fontColor">select * from perf_sample where timestamp_trace =
              28463134340470</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知同步后的时间戳为28463134340470，查询采样数据对应的的调用栈信息<br>
          <code class="fontColor">select A.* from perf_callchain as A, perf_sample as B where
              B.timestamp_trace = 28463134340470 and A.callchain_id = B.callchain_id</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知同步后的时间戳为28463134277762，查询采样数据的函数名及文件路径<br>
          <code class="fontColor">select A.*, B.name, C.path from perf_sample as A, perf_callchain as
              B, perf_files as C where A.timestamp_trace = 28463134277762 and B.callchain_id = A.callchain_id
              and B.callchain_id = 0 and B.file_id = C.file_id and C.serial_id = 0</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知线程号为6700，查询所有的采样记录<br>
          <code class="fontColor">select * from perf_sample where thread_id = 6700</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知进程号为7863，查询所有的采样记录<br>
          <code class="fontColor">select A.* from perf_sample as A, perf_thread as B where
              B.process_id = 7863 and A.thread_id = B.thread_id</code>
        </p>
      </li>
      <li>
        <p class="fontColor">查询所有采样对应的事件类型<br>
          <code class="fontColor">select A.*, B.report_value from perf_sample as A, perf_report as B
              where A.event_type_id = B.id</code>
        </p>
      </li>
    </ul>
    <h3 class="mume-header fontColor" id="header-index-10">帧渲染表之间的关系图</h3>

    <p class="fontColor">frame_slice: 记录RS(RenderService)和应用的帧渲染。<br>
      gpu_slice: 记录RS的帧对应的gpu渲染时长。<br>
      frame_maps:记录应用到RS的帧的映射关系。<br>
      <img src="../figures/traceStreamer/frames.png" alt="GitHub Logo">
    </p>
    <h3 class="mume-header fontColor">查询示例</h3>

    <ul class="fontColor">
      <li>
        <p class="fontColor">已知进程，查询进程对应的实际渲染帧<br>
          <code class="fontColor">select * from frame_slice where ipid = 1</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知进程的实际渲染帧的dst为12，求其对应的RS进程的渲染帧<br>
          <code class="fontColor">select * from frame_slice where id = 12</code>
        </p>
      </li>
      <li>
        <p class="fontColor">已知RS的渲染帧在frame_slice中所在行是14，求其对应的GPU渲染时长<br>
          <code class="fontColor">select * from gpu_slice where frame_row = 14</code>
        </p>
      </li>
    </ul>
    <h3 id="header-index-11">JS内存数据表关系图</h3>
    <p class="fontColor">js_heap_files：记录js内存数据的文件名和文件索引</p>
    <p class="fontColor"><img src="../figures/traceStreamer/js_heap_files.png" alt="1683163158954"></p>
    <p class="fontColor">js_heap_nodes:记录js内存类对象数据<br>
      js_heap_edges:记录js内存类对象的成员数据<br>
      js_heap_trace_node:记录timeline的调用栈信息<br>
      js_heap_sample:记录timeline的时间轴信息<br>
      <img src="../figures/traceStreamer/js_heap_nodes.png" alt="1683163373206">
    </p>
    <h2 id="header-index-12">TraceStreamer输出数据库表格详细介绍</h2>
    <h3>app_name表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>app_name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>app_key</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录HiSysevent上报事件中的IDE相关事件中APPNAME的表关联信息。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id：用于与表hisys_event_measure表中的key_id字段做对应</li>
      <li>app_name：对应的事件的信息ID</li>
      <li>app_key：对应的事件的APPNAME字段的信息ID</li>
    </ul>
    <h3>args表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>key</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>datatype</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>argset</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录方法的参数集合。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>key：键</li>
      <li>datatype：数据类型</li>
      <li>value：取值</li>
      <li>argset：参数集合</li>
    </ul>
    <h3>bio_latency_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>latency_dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tier</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>block_number</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>path</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>dur_per_4k</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录IO操作相关方法调用，及调用栈数据。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：调用栈的唯一标识。与ebpf_callstack表中callchain_id字段关联</li>
      <li>type：事件类型其取值为枚举类型（DATA_READ，DATA_WRITE，METADATA_READ，
        METADATA_WRITE，PAGE_IN，PAGE_OUT）
      </li>
      <li>ipid：TS内部进程号</li>
      <li>itid：TS内部线程号</li>
      <li>start_ts：开始时间</li>
      <li>end_ts：结束时间</li>
      <li>latency_dur：总延迟</li>
      <li>tier：优先级</li>
      <li>size：文件大小</li>
      <li>block_number：数据量大小（一般为4K）</li>
      <li>path：路径id</li>
      <li>dur_per_4k：每4k数据的平均延迟</li>
    </ul>
    <h3>callstack表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cat</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cookie</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>parent_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>argsetid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>chainId</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>spanId</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>parentSpanId</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>flag</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      记录调用堆栈和异步调用信息，其中depth,stack_id和parent_stack_id仅在非异步的调用中有效。当cookid不为空时，为异步调用，此时callid为进程唯一号，否则为线程唯一号。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts: 数据事件上报时间戳</li>
      <li>dur：调用时长</li>
      <li>callid：调用者的ID，比如针对线程表里面的id</li>
      <li>cat: 表示当前栈帧属于哪个业务(binder/workqueue/null)</li>
      <li>name：调用名称</li>
      <li>depth：调用深度</li>
      <li>cookie: 异步调用的cookie值</li>
      <li>parent_id：父调用的id</li>
      <li>argsetid: 调用的参数列表，关联args表的id字段</li>
      <li>chainId:分布式数据中的chainId,id相同则表示为同一个分布式的调用栈</li>
      <li>spanId：分布式调用关联关系，当前帧的id</li>
      <li>parentSpanId: 分布式调用关联关系，当前帧的parent的SpanId，对应当前表的spandId</li>
      <li>flag：C表示分布式调用发送方，S表示接受方</li>
    </ul>
    <h3>clk_event_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录时钟信息。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 与measure表的filterId字段关联</li>
      <li>type：时钟事件类型</li>
      <li>name：时钟事件名称</li>
      <li>cpu: cpu编号</li>
    </ul>
    <h3>clock_event_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此结构用来维护时钟事件，cpu与唯一的ID做关联。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 与measure表的filterId字段关联</li>
      <li>Type：时钟事件类型</li>
      <li>Name：时钟事件名称</li>
      <li>cpu: cpu编号</li>
    </ul>
    <h3>cpu_measure_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">将cpu号作为key1，cpu的频率，空闲等状态作为key2，唯一确定一个filter_id。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 与measure表的filterId字段关联</li>
      <li>name: 事件名(cpu_idle/cpu_frequency/cpu_frequency_limits_max/cpu_frequency_limits_min)</li>
      <li>cpu：cpu号</li>
    </ul>
    <h3>cpu_usage表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>total_load</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>user_load</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>system_load</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>process_num</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了/proc/pid/stat与CPU使用率相关的数据。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>ts: 数据上报时间</li>
      <li>dur: 持续时间</li>
      <li>total_load：总负荷</li>
      <li>user_load：用户负载</li>
      <li>system_load：系统负载</li>
      <li>process_num：线程数</li>
    </ul>
    <h3>data_dict表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>data</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此表记录了一个数据类型ID和字符串的映射。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id：索引值</li>
      <li>data：字符串</li>
    </ul>
    <h3>data_type表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>typeId</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>desc</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此表记录了一个数据类型ID和数据描述的映射。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>typeId:：数据类型id</li>
      <li>Desc：数据类型描述</li>
    </ul>
    <h3>diskio表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>rd</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>wr</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>rd_speed</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>wr_speed</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>rd_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>wr_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>rd_count_speed</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>wr_count_speed</td>
          <td>REAL</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了与磁盘读写相关的数据。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>ts：时间戳</li>
      <li>dur: 持续时间</li>
      <li>rd: 当前时间段的读取量</li>
      <li>wr: 当前时间段的写入量</li>
      <li>rd_speed:当前时间段的读取速度</li>
      <li>wr_speed:当前时间段的写入速度</li>
      <li>rd_count:读取的数据总量</li>
      <li>wr_count:写入的数据总量</li>
      <li>rd_count_speed：读数据的平均速度</li>
      <li>wr_count_speed：写入数据的平均速度</li>
    </ul>
    <h3>ebpf_callstack表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ip</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>symbols_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_path_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了与磁盘读写相关的数据。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：调用栈的唯一标识</li>
      <li>depth：调用栈深度。取值为零时表示栈顶</li>
      <li>ip：调用栈ip</li>
      <li>symbols_id：调用栈函数名称, 与data_dict中的id字段关联</li>
      <li>file_path_id：调用栈函数所属文件路径, 与data_dict中的id字段关联</li>
    </ul>
    <h3>file_system_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>return_value</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>error_code</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>fd</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>first_argument</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>second_argument</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>third_argument</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>fourth_argument</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了调用栈的相关信息。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>callchain_id：调用栈信息ID与file_system_callstack表中call_chain_id字段相关联</li>
      <li>type：对应文件操作open，close，read，write</li>
      <li>ipid：样本所属的内部进程ID，关联process表id</li>
      <li>itid: 样本所属的内部线程ID，关联thread表id</li>
      <li>start_ts：开始时间</li>
      <li>end_ts：结束时间</li>
      <li>dur：耗时</li>
      <li>return_value：文件操作的返回值</li>
      <li>error_code：文件操作发生错误时的错误码</li>
      <li>fd：文件描述符fd</li>
      <li>file_id：当type为open，close时为其操作的文件路径，当type为read，write时为固定字段（null）</li>
      <li>size：在type为read，write时对应的文件的读或者写的大小</li>
      <li>first_argument：参数一</li>
      <li>second_argument：参数二</li>
      <li>third_argument：参数三</li>
      <li>fourth_argument：参数四</li>
    </ul>
    <h3>hidump表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>fps</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此表记录了设备的帧率信息，fps。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts: 数据上报时间戳</li>
      <li>fps：帧率值</li>
    </ul>
    <h3>hisys_event_measure表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>serial</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>key_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>int_value</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>string_value</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录所有的system event事件的相关数据，及其相关表的映射信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>serial：每条数据过来携带唯一一条id作为标识</li>
      <li>ts: 数据上报时间戳</li>
      <li>name_id：存放事件对应的ID，与data_dict表相关联可以取出对应的字段</li>
      <li>key_id：存放事件包含的字段的ID，与表app_name的id字段相关联，找到app_name表的
        id字段对应行的app_key字段与表data_dict表相关联取出对应的字段
      </li>
      <li>type：存放事件所包含的字段的值所属的类型为int型还是string（0为int，1为string）</li>
      <li>int_value：存放本事件所包含的字段的int型的值</li>
      <li>string_value：存放本事件所包含的字段的string型的值</li>
    </ul>
    <h3>instant表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ref</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>wakeup_from</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ref_type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>REAL</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了系统中的waking和wakeup事件。</p>
    <h4>字段描述</h4>
    <ul class="fontColor">
      <li>ts：唤醒时间</li>
      <li>name：唤醒事件的名称</li>
      <li>ref：索引号</li>
      <li>wakeup_from：唤醒当前线程的内部线程号（itid）</li>
      <li>ref_type：描述了value字段的类型（一般取值为itid）</li>
      <li>value：一般为当前线程的内部线程号取值</li>
    </ul>
    <h3>irq表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cat</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cookie</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>parent_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>argsetid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>flag</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录中断相关事件。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts: 数据上报时间戳</li>
      <li>dur：调用中断时长</li>
      <li>callid：调用中断者的ID，比如针对线程表里面的id</li>
      <li>cat：调用栈数据类型（取值范围：irq，softirq, ipi）</li>
      <li>name：调用中断的名称</li>
      <li>depth：中断调用的深度</li>
      <li>cookie: 异步调用的cookie值</li>
      <li>parent_id：父调用中断的id</li>
      <li>argsetid: 跟arg_view中的argset关联，保存irq的名字以及值（irq=5 name=IPI）</li>
      <li>flag: 1表示硬中断</li>
    </ul>
    <h3>js_config表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>interval</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>capture_numeric_value</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>trace_allocation</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>enable_cpu_profiler</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cpu_profiler_interval</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录arkTs数据采集的相关配置。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>pid:目标进程ID。</li>
      <li>
        type:JS数据类型，取值与枚举HeapType对应，0表示JS内存数据为snapshot类型，1表示JS内存数据为timeline类型，-1表示没有JS内存数据。
      </li>
      <li>interval:当type=0时生效，单位是秒，表示一次snapshot事件和下一次snapshot事件之间的间隔。</li>
      <li>capture_numeric_value:当type=0时生效，表示是否同时抓取numeric。</li>
      <li>track_allocation:当type=1时生效，表示是否抓取allocations。</li>
      <li>enable_cpu_profiler:表示是否存在cpuprofiler的数据。</li>
      <li>cpu_profiler_interval:表示cpuprofiler数据的采集间隔。</li>
    </ul>
    <h3>js_cpu_profiler_node表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>function_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>function_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>script_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>url_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>line_number</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>column_number</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>hit_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>children</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>parent_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录cpu profiler中node节点的数据。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>function_id: 函数的ID号。</li>
      <li>function_index:函数名称在data_dict中的索引号。</li>
      <li>script_id:关联到的类对象所在文件的绝对路径ID。</li>
      <li>url_index:关联到的类对象所在文件的绝对路径名称在data_dict中的索引号。</li>
      <li>line_number:类对象所在文件的行号。</li>
      <li>column_number:类对象所在文件的列号。</li>
      <li>hit_count:采样次数。</li>
      <li>children:子节点的id号。</li>
      <li>parent_id:父节点的id号。</li>
    </ul>
    <h3>js_cpu_profiler_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>function_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了cpu profiler 中sample节点的数据。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: ts内部ID号。</li>
      <li>function_id:函数的ID号。</li>
      <li>start_time:数据上报的起始时间。</li>
      <li>end_time:数据上报的终止时间。</li>
      <li>dur:数据上报的间隔时间。</li>
    </ul>
    <h3>js_heap_edges表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>edge_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name_or_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>to_node</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>from_node_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>to_node_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录js内存数据类对象对应的成员的信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>edge_index：成员的索引号</li>
      <li>type：成员的类型，取值范围为js_heap_info表中的edge_types</li>
      <li>name_or_index：数据名称，取值为js_heap_string表中的下标索引</li>
      <li>to_node：此成员指向的类对象在nodes数组中的索引</li>
      <li>from_node_id：类对象ID，该类对象指向此成员数据</li>
      <li>to_node_id：此成员指向到的类对象nodes数组中的ID</li>
    </ul>
    <h3>js_heap_files表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>start_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>self_size</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了js内存数据的文件名称和时间。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id：文件ID</li>
      <li>file_name：文件名称</li>
      <li>start_time：数据抓取的起始时间</li>
      <li>end_time：数据抓取的终止时间</li>
      <li>self_size: 当前snapshot中所有node的size之和</li>
    </ul>
    <h3>js_heap_info表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>key</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>int_value</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>str_value</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了js内存数据类型，如nodes和edges的字段类型和数据总数。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>key：类型名称</li>
      <li>type：数据类型索引</li>
      <li>int_value：int类型的数据值，如count类型数据</li>
      <li>str_value：string类型的数据值，如typename</li>
    </ul>
    <h3>js_heap_location表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>object_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>script_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>line</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>column</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了js内存location节点相关数据，此表目前无抓取到的数据。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>object_index：与location关联的类对象的索引，取值为js_heap_nodes的下标索引</li>
      <li>script_id：关联到的类对象所在文件的绝对路径ID</li>
      <li>line：在类对象所在的文件中的行号</li>
      <li>column：在类对象所在的文件中的列号</li>
    </ul>
    <h3>js_heap_nodes表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>node_index</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>id</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>self_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>edge_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>trace_node_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>detachedness</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了js内存数据中类对象的数据。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>node_index：类对象的索引</li>
      <li>type：类对象的类型</li>
      <li>name：类对象的名称</li>
      <li>id：类对象的唯一ID</li>
      <li>self_size：该类对象所有成员的大小（以字节为单位）</li>
      <li>edge_count：该类对象指向的类成员的个数</li>
      <li>trace_node_id：该类对象关联到js_heap_trace_node表中的调用栈ID</li>
      <li>detachedness：是否可以从window全局对象访问此节点，0表示是，1表示否</li>
    </ul>
    <h3>js_heap_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>timestamp_us</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>last_assigned_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了timeline模式下的时间轴信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>timestamp_us：时间信息</li>
      <li>last_assigned_id：当前时间点的id</li>
    </ul>
    <h3>js_heap_string表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>string</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了js内存数据中的字符串。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>file_index：索引</li>
      <li>string：对应的字符串信息</li>
    </ul>
    <h3>js_heap_trace_function_info表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>function_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>function_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>script_name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>script_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>line</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>column</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了timeline模式下的调用栈的每个函数信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>function_index：函数索引</li>
      <li>function_id：函数ID</li>
      <li>name：函数名称</li>
      <li>script_name：关联到的类对象所在文件的绝对路径名称</li>
      <li>script_id：关联到的类对象所在文件的绝对路径ID</li>
      <li>line：在类对象所在的文件中的行号</li>
      <li>column：在类对象所在的文件中的列号</li>
    </ul>
    <h3>js_heap_trace_node表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>function_info_index</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>parent_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了timeline模式下的调用栈的信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>file_id：文件ID</li>
      <li>id：调用栈节点索引</li>
      <li>function_info_index：函数信息索引</li>
      <li>count：调用栈个数</li>
      <li>size：调用栈大小</li>
      <li>parent_id：调用栈父节点</li>
    </ul>
    <h3>app_startup表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>call_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>packed_name</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了应用启动的相关信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>call_id：调用者的ID，比如针对线程表里面的id</li>
      <li>ipid：内部进程号</li>
      <li>tid：内部线程号</li>
      <li>start_time：阶段开始时间</li>
      <li>end_time：阶段结束时间</li>
      <li>start_name：阶段名称</li>
      <li>packed_name：应用名称</li>
    </ul>
    <h3>static_intialize表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>call_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>so_name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了so初始化的相关信息。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>call_id：调用者的ID，比如针对线程表里面的id</li>
      <li>ipid：内部进程号</li>
      <li>tid：内部线程号</li>
      <li>start_time：阶段开始时间</li>
      <li>end_time：阶段结束时间</li>
      <li>so_name：so文件名称</li>
      <li>depth：泳道图的深度</li>
    </ul>
    <h3>live_process表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cpu_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>process_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>process_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>parent_process_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>uid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>user_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>cpu_usage</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>pss_info</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_num</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>disk_writes</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>disk_reads</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了一些实时的进程中（/proc/<span class="katex"><span class="katex-mathml"><math
            xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>P</mi>
                <mi>I</mi>
                <mi>D</mi>
                <mi mathvariant="normal">/</mi>
                <mi>s</mi>
                <mi>t</mi>
                <mi>a</mi>
                <mi>t</mi>
                <mi>u</mi>
                <mi>s</mi>
                <mtext>、</mtext>
                <mi mathvariant="normal">/</mi>
                <mi>p</mi>
                <mi>r</mi>
                <mi>o</mi>
                <mi>c</mi>
                <mi mathvariant="normal">/</mi>
              </mrow>
              <annotation encoding="application/x-tex">PID/status、/proc/</annotation>
            </semantics>
          </math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut"
              style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal"
              style="margin-right:0.13889em;">P</span><span class="mord mathnormal"
              style="margin-right:0.07847em;">I</span><span class="mord mathnormal"
              style="margin-right:0.02778em;">D</span><span class="mord">/</span><span
              class="mord mathnormal">s</span><span class="mord mathnormal">t</span><span
              class="mord mathnormal">a</span><span class="mord mathnormal">t</span><span
              class="mord mathnormal">u</span><span class="mord mathnormal">s</span><span
              class="mord cjk_fallback">、</span><span class="mord">/</span><span class="mord mathnormal">p</span><span
              class="mord mathnormal">roc</span><span
              class="mord">/</span></span></span></span>PID/stat、/proc/stat）执行的一些数据（Monitor）。
    </p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>ts: 数据上报时间戳</li>
      <li>dur: 事件持续时间</li>
      <li>cpu_time: /proc/$PID/stat 中的cpu时间</li>
      <li>process_id：进程id</li>
      <li>process_name：进程名</li>
      <li>parent_process_id：父进程的id</li>
      <li>uid：用户id</li>
      <li>user_name：用户名</li>
      <li>cpu_usage：cpu使用率</li>
      <li>pss_info：进程信息</li>
      <li>thread_num：线程数量</li>
      <li>disk_writes：磁盘写量</li>
      <li>disk_reads：磁盘读量</li>
    </ul>
    <h3>log表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>seq</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>level</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>tag</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>context</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>origints</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录日志信息。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>seq：日志序号，保证日志解析的准确性</li>
      <li>ts：打印日志时间</li>
      <li>pid：日志的进程号</li>
      <li>tid：日志的线程号</li>
      <li>level：日志级别</li>
      <li>tag：日志标签</li>
      <li>context：日志内容</li>
      <li>origints：log中自带的时间</li>
    </ul>
    <h3>measure表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>filter_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录所有的计量值。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>type：固定字段（measure）</li>
      <li>ts：事件时间</li>
      <li>dur：该值持续的时长</li>
      <li>value：数值</li>
      <li>filter_id：对应filter表中的ID</li>
    </ul>
    <h3>measure_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>source_arg_set_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      记录一个递增的filterid队列，所有其他的filter类型在获取过程中，均从此数据列表中获取下一个可用的filter_id并做记录。</p>
    <h4>字段详细描述</h4>
    <p class="fontColor">过滤分类（type），过滤名称（key2），数据ID(key1)。<br>
      id: 唯一的filterId,与process_measure_filter, sys_event_filter中的id关联。<br>
      type：各种类型（cpu_measure_filter，clk_rate_filter，process_measure_filter...）<br>
      name: type的子类型。<br>
      source_arg_set_id: 同一个source_arg_set_id代表一组数据，一般取得是itid或者cpu编号。</p>
    <h3>meta表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此表记录了数据解析或导出时的一些现场数据，比如使用的TraceStreamer版本，
      工具的发布时间，数据解析的时间，数据的持续时长，以及原始数据的格式。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>Name：指定元数据的key</li>
      <li>Value：指定元数据的value</li>
    </ul>
    <h3>native_hook表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>event_type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>sub_type_id</td>
          <td>NUM</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>addr</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>heap_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>all_heap_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>current_size_dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>last_lib_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>last_symbol_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录native_hook抓取的某个进程的堆内存，内存映射相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：唯一标识一条native_hook数据</li>
      <li>ipid：所属的进程内部id, 关联process表中的id</li>
      <li>itid：所属的线程内部id, 关联thread表中的id</li>
      <li>event_type：事件类型取值范围（AllocEvent,FreeEvent,MmapEvent, MunmapEvent）</li>
      <li>sub_type_id：子事件类型(只有event_type字段为MmapEvent时，该字段才会有值)</li>
      <li>start_ts：申请内存开始时间</li>
      <li>end_ts：释放内存时间</li>
      <li>dur：申请内存活跃时间</li>
      <li>addr：申请内存地址</li>
      <li>heap_size: 申请的内存大小</li>
      <li>all_heap_size：从采集数据开始到当前时刻，申请并活跃的内存总量。
        event_type为AllocEvent或者FreeEvent时，表示活跃的堆内存总量。当event_type为MmapEvent或者MunmapEvent时，表示活跃的映射内存总量
      </li>
      <li>current_size_dur：表示当前活跃内存总量的持续时间</li>
      <li>last_lib_id：函数调用栈最后一个函数所属的文件路径，除了文件名中带musl和libc++</li>
      <li>last_symbol_id: 函数调用栈最后一个函数名，lib除了文件名中带musl和libc++</li>
    </ul>
    <h3>native_hook_frame表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ip</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>symbol_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>offset</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>symbol_offset</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>vaddr</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了内存的申请和释放的堆栈。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：标识一组调用堆栈</li>
      <li>depth：调用栈深度</li>
      <li>ip: 函数ip</li>
      <li>symbol_id：函数名id,对应data_dict中id</li>
      <li>file_id：函数所属文件id，对应data_dict中id</li>
      <li>offset: 取自Frame message的offset字段</li>
      <li>symbol_offset: 取自Frame message的symbol_offset字段</li>
      <li>vaddr: 一般取值为offset + symbol_offset</li>
    </ul>
    <h3>native_hook_statistic表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>sub_type_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>apply_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>release_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>apply_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>release_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>last_lib_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>last_symbol_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了内存申请/释放的统计信息。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：内存分配的回调链id</li>
      <li>ipid：进程id</li>
      <li>ts：统计数据上报时间</li>
      <li>type：事件类型，0代表malloc事件，1代表mmap事件</li>
      <li>sub_type_id：事件子类型，关联data_dict表id</li>
      <li>apply_count：当前调用栈内存分配总次数</li>
      <li>release_count：当前调用栈内存释放总次数</li>
      <li>apply_size：当前调用栈累计分配总大小</li>
      <li>release_size：当前调用栈累计释放总大小</li>
      <li>last_lib_id：函数调用栈最后一个函数所属的文件路径，除了文件名中带musl和libc++</li>
      <li>last_symbol_id: 函数调用栈最后一个函数名，lib除了文件名中带musl和libc++</li>
    </ul>
    <h3>network表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tx</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>rx</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tx_speed</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>rx_speed</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>packet_in</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>packet_in_sec</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>packet_out</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>packet_out_sec</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>net_type</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了网络数据传输相关的信息。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>ts:事件上报时间</li>
      <li>dur: 持续时间</li>
      <li>tx: 网络数据的写入次数</li>
      <li>rx: 网络数据的读取次数</li>
      <li>tx_speed: 网络数据的写入次数/s</li>
      <li>rx_speed: 网络数据的读取次数/s</li>
      <li>packet_in：网络数据申请的数据包个数</li>
      <li>packet_in_sec： 网络数据申请的数据包个数/s</li>
      <li>packet_out: 网络数据发送的数据包个数</li>
      <li>packet_out_sec：网络数据发送的数据包个数/s</li>
      <li>net_type:网络类型，wifi/蜂窝</li>
    </ul>
    <h3>paged_memory_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>addr</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了网络数据传输相关的信息。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id： 取值相同的一组数据，表示一个完整的调用栈</li>
      <li>type：事件类型</li>
      <li>ipid：TS内部进程号</li>
      <li>start_ts：开始时间</li>
      <li>end_ts：结束时间</li>
      <li>dur：持续时间</li>
      <li>size：操作页数，1页=4kb</li>
      <li>addr: 内存地址</li>
      <li>itid：内部线程号</li>
    </ul>
    <h3>perf_callchain表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ip</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>vaddr_in_file</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>symbol_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了Hiperf采样数据的调用栈信息。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：标识一组调用堆栈</li>
      <li>depth：调用栈深度</li>
      <li>ip: 函数ip</li>
      <li>vaddr_in_file：函数在文件中的虚拟地址</li>
      <li>file_id：与perf_files中的file_id字段相关联</li>
      <li>symbol_id：与perf_files中的serial_id相关联</li>
      <li>name：函数名</li>
    </ul>
    <h3>perf_files表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>file_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>serial_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>symbol</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>path</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录Hiperf工具采集到的函数符号表和文件名。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>file_id：文件编号</li>
      <li>serial_id：一个文件中可能有多个函数，serial_id表示函数的编号</li>
      <li>symbol：函数名</li>
      <li>path：文件路径</li>
    </ul>
    <h3>perf_report表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>report_type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>report_value</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录Hiperf工具采集数据时的配置信息。包括：抓取的事件类型，抓取数据的命令，
      抓数据时指定的进程名称。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>report_type：数据类型。取值只有三种类型：config_name（事件类型）, workload（抓取的进程名）,
        cmdline（抓取命令）
      </li>
      <li>report_value：对应类型的取值</li>
    </ul>
    <h3>perf_sample表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callchain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>timestamp</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>event_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>event_type_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>timestamp_trace</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cpu_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_state</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录Hiperf工具的采样信息。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>callchain_id：关联perf_callchain表callchain_id</li>
      <li>timestamp：未进行时钟源同步的时间戳</li>
      <li>thread_id：线程号</li>
      <li>event_count：采样统计</li>
      <li>event_type_id：事件类型编号。与PerfReport表的id字段相关联</li>
      <li>timestamp_trace：时钟源同步后的时间戳</li>
      <li>cpu_id：cpu核编号</li>
      <li>
        thread_state：线程状态。采样对应Sched_Waking事件时，为Runing;对应Sched_Switch事件时，为Suspend。其余事件类型，为“-”
      </li>
    </ul>
    <h3>perf_thread表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>process_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_name</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录Hiperf工具采集到的进程和线程数据。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>thread_id：线程号</li>
      <li>process_id：进程号</li>
      <li>thread_name：线程名</li>
    </ul>
    <h3>process表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>switch_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>thread_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>slice_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>mem_count</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了进程相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id：进程在数据库重新重新定义的id，从0开始序列增长</li>
      <li>ipid：TS内部进程id</li>
      <li>pid：进程的真实id</li>
      <li>name：进程名字</li>
      <li>start_ts：开始时间</li>
      <li>switch_count：统计内部有多少个线程有切换</li>
      <li>thread_count：统计其线程个数</li>
      <li>slice_count：进程内有多少个线程有slice数据</li>
      <li>mem_count：进程是否有内存数据</li>
    </ul>
    <h3>process_measure表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>NUM</td>
        </tr>
        <tr>
          <td>filter_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">保存进程的内存，堆栈值等所有计量值信息。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>type: 固定为measure</li>
      <li>ts：事件时间</li>
      <li>dur: 持续时间</li>
      <li>value：数值</li>
      <li>filter_id：对应process_measure_filter表中的id</li>
    </ul>
    <h3>process_measure_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">将进程ID作为key1，进程的内存，界面刷新，屏幕亮度等信息作为key2，唯一确定一个filter_id,
      filter_id同时被记录在measure_filter表中。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 与measure表的filterId字段相关联</li>
      <li>name：key名</li>
      <li>ipid：进程内部编号</li>
    </ul>
    <h3>raw表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了系统中的waking、wakup、cpu_idel、cpu_frequency数据。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：事件时间</li>
      <li>name：调度名称（取值：cpu_idle，sched_wakeup，sched_waking）</li>
      <li>cpu：事件发生在哪个CPU</li>
      <li>itid：时间对应哪个itid,对应thread表中id</li>
    </ul>
    <h3>sched_slice表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts_end</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_state</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>priority</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>arg_setid</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      此数据结构主要作为ThreadState的上下文使用，这张表是sched_switch事件的原始记录。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：事件发生时间</li>
      <li>dur：状态持续时长</li>
      <li>ts_end：状态结束时长</li>
      <li>cpu：事件发生在哪个cpu</li>
      <li>itid：进程内部编号</li>
      <li>ipid：进程内部编号</li>
      <li>end_state：线程的终结状态</li>
      <li>priority: 线程优先级</li>
      <li>arg_setid：线程状态参数，对应args中argset</li>
    </ul>
    <h3>smaps表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>timestamp</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_addr</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>end_addr</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>dirty</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>swapper</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>resident_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>pss</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>virtaul_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>reside</td>
          <td>REAL</td>
        </tr>
        <tr>
          <td>protection_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>path_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>shared_clean</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>shared_dirty</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>private_clean</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>private_dirty</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>swap</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>swap_pss</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录进程的内存消耗的相关信息采样,读取/proc/${pid}/smaps节点。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>timestamp：事件发生事件</li>
      <li>start_addr：内存段地址的起始位置</li>
      <li>end_addr：内存段地址的结束位置</li>
      <li>dirty：其他进程共享的被写的页的大小 + 已被改写的私有页面的大小</li>
      <li>swapper：存在于交换分区的数据大小</li>
      <li>resident_size：实际分配的内存大小</li>
      <li>pss：平摊计算后的实际物理使用内存</li>
      <li>virtaul_size：虚拟内存空间的大小</li>
      <li>reside：实际分配的内存大小与虚拟内存空间的大小的比</li>
      <li>protection_id：内存段的权限id与表data_dict的id字段相关联</li>
      <li>path_id：如果区域是从文件映射的，则这是文件的名称对应的id序号与表data_dict的id字段相关联</li>
      <li>shared_clean:smaps节点中Shared_clean</li>
      <li>shared_dirty:smaps节点中Shared_dirty</li>
      <li>private_clean:smaps节点中Private_clean</li>
      <li>private_dirty:samps节点中Private_dirty</li>
      <li>swap： smap节点中Swap</li>
      <li>swap_pss:smap节点中SwapPss</li>
      <li>type : 根据type分类信息</li>
    </ul>
    <h3>stat表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>event_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>stat_type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>serverity</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>source</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      此结果用来统计数据解析中各类数据的数据条数，数据和合法性，数据的匹配程度（begin-end），数据的损失等，查看此结构对应的表，可对数据源有基本的了解。</p>
    <h4>主要字段描述</h4>
    <ul class="fontColor">
      <li>event_name：数据类型</li>
      <li>stat_type：数据状态</li>
      <li>count：数据条数</li>
      <li>severity：严重级别</li>
      <li>source：数据来源</li>
    </ul>
    <h3>symbols表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>funcname</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>addr</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">此表记录了被调用函数与其地址的映射关系。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>funcname：系统调用名称</li>
      <li>addr：系统调用地址</li>
    </ul>
    <h3>syscall表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>syscall_num</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ret</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录用户空间函数与内核空间函数相互调用记录。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>syscall_num：系统调用的序号</li>
      <li>type：固定取值：enter或者exit</li>
      <li>ipid：线程所属的进程ID</li>
      <li>ts：时间戳</li>
      <li>ret：返回值，在type为exit时有效</li>
    </ul>
    <h3>sys_event_filter表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录所有的filter。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>id: 与measure表的filterid字段关联</li>
      <li>type：文件类型</li>
      <li>name：文件名</li>
    </ul>
    <h3>sys_mem_measure表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>type</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>filter_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录系统内存与系统虚拟内存。</p>
    <h4>相关字段描述</h4>
    <ul class="fontColor">
      <li>type: 固定为measure</li>
      <li>ts：事件时间</li>
      <li>dur: 持续时间</li>
      <li>value：数值</li>
      <li>filter_id：对应filter表中的ID</li>
    </ul>
    <h3>thread表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>is_main_thread</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>switch_count</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了线程相关数据。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>itid：TS内部线程id</li>
      <li>tid：线程号</li>
      <li>name：线程名</li>
      <li>start_ts：开始时间</li>
      <li>end_ts：结束时间</li>
      <li>ipid：线程所属的进程id, 关联process表中的ID</li>
      <li>is_main_thread：是否主线程，主线程即该线程实际就是进程本身</li>
      <li>switch_count：当前线程的切换次数</li>
    </ul>
    <h3>thread_state表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>cpu</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>state</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>argset_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">记录了线程状态相关的数据。</p>
    <h4>字段详细描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：该线程状态的起始时间</li>
      <li>dur：该线程状态的持续时间</li>
      <li>cpu：该线程在哪个cpu上执行（针对running状态的线程）</li>
      <li>itid：该状态所属的线程id, 关联线程表中的id</li>
      <li>tid：线程号</li>
      <li>pid：进程号</li>
      <li>state：线程实际的的状态值</li>
      <li>argset_id：线程状态参数，对应arg_view中arg_set</li>
    </ul>
    <pre data-role="codeBlock" data-info="" class="fontColor light smartperf-"><code
        class="fontColor">'R', Runnable状态
  "S", interruptible sleep
  "D", uninterruptible sleep
  "D-IO", uninterruptible io
  "D-NIO", uninterruptible nio
  "Runing", Runing状态
  "T", Task stoped.
  "t"  Traced.
  "X", ExitedDead
  "Z", Zombie
  "P", Parked
  "I", Task_Dead
  "DK",
  "DK-IO",
  "DK-NIO",
  "TK", TracedKill
  "R+", WakeKill
  "R+", TaskNew
  "R-B", Task runnable binder.
  </code></pre>
    <h3>clock_snapshot表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>clock_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>clock_name</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">时钟号和时间，时钟名的映射表。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>clock_id：时钟号</li>
      <li>ts：时钟快照报的时间</li>
      <li>clock_name：时钟号对应的时钟名字<br>
        时钟快照是用来对齐不同时钟号的时间<br>
        比如，时钟号1的时间100，和时钟号2的时间200对齐<br>
        则时钟号为2 的250，转换为时钟号1的时间后，为150
      </li>
    </ul>
    <h3>datasource_clockid表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>data_source_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>clock_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">数据源和时钟号的映射表。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>data_source_name：数据源的名称，和数据源的插件名保持一致</li>
      <li>clock_id：时钟号，对应clock_snapshot中的时钟号<br>
        这个表是用来告诉IDE，不同的事件源的事件，原始时钟号是多少，在数据库中保存的事件，通常是转换为boottime后的时间，但有些情况下，IDE仍然需要知道原始的时钟号是怎样的
      </li>
    </ul>
    <h3>frame_slice表</h3>
    <h3>表结构</h3>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>vsync</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>callstack_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>src</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>dst</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type_desc</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>flag</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>frame_no</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      应用的实际渲染帧和期望渲染帧的开始时间，持续时长，以及RenderService和App之间的关联关系。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>ts: 数据上报时间戳</li>
      <li>vsync: 一个id值，用于标识一组渲染帧的期望和实际数据。</li>
      <li>ipid：所属的进程内部id, 关联process表中的id</li>
      <li>itid：所属的线程id, 关联thread表中的id</li>
      <li>callstack_id：该帧数据对应着callstack表的调用栈所在的行数</li>
      <li>dur：该帧渲染时长（当数据不完整时，改行数据为空）</li>
      <li>src：该帧是被哪一帧（该表中对应的行数）触发的，有多个值时，用逗号分割</li>
      <li>dst：该帧对应的渲染帧是哪一行</li>
      <li>type: 0 说明该行数据是实际渲染帧， 1 说明该行数据是期望渲染帧</li>
      <li>type_desc: 当type值为0时，该字段为actural; 当type值为1时，该字段为expect;</li>
      <li>flag: 空时，为不完整的数据；0 表示实际渲染帧不卡帧， 1 表示实际渲染帧卡帧(expectEndTime &lt;
        actualEndTime为异常)， 2 表示数据不需要绘制（没有frameNum信息），3
        表示rs进程与app进程起止异常(|expRsStartTime - expUiEndTime| &lt; 1ms
        正常，否则异常。这里使用期待帧的时间差做判断，给实际帧打标签)
      </li>
      <li>depth：预留</li>
      <li>frame_no：预留</li>
    </ul>
    <h3>frame_maps表</h3>
    <h3>表结构</h3>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>src_row</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dst_row</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      该表记录了app到RenderService的帧的映射关系，同frame_slice表中的src映射到dst的关系。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>src_row：frame_slice表中app的帧所在的行</li>
      <li>dst_row：frame_slice表中RenderService的帧所在的行</li>
    </ul>
    <h3>gpu_slice表</h3>
    <h3>表结构</h3>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>frame_row</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>dur</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了每一帧数据在GPU上的渲染时长。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>frame_row：frame_slice表中渲染帧所在的行</li>
      <li>dur：帧渲染时长</li>
    </ul>
    <h3>trace_range表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>start_ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_ts</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了解析开始时间以及结束时间。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>start_ts：trace的开始时间，纳秒为单位</li>
      <li>end_ts：trace的结束时间，纳秒为单位</li>
    </ul>
    <h3>task_pool表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>allocation_task_row</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>execute_task_row</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>return_task_row</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>allocation_itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>execute_itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>return_itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>task_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>priority</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>execute_state</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>return_state</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>timeout_row</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了任务池相关数据，与callstack表关联。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>allocation_task_row：与callstack表id号相关联</li>
      <li>execute_task_row：与callstack表id号相关联</li>
      <li>return_task_row：与callstack表id号相关联</li>
      <li>allocation_itid：任务分发的itid</li>
      <li>execute_itid：任务执行的itid</li>
      <li>return_itid：任务返回的itid</li>
      <li>task_id：任务执行id</li>
      <li>priority：任务分发独有的，优先级{HIGH : 0，MEDIUM : 1，LOW : 2}</li>
      <li>execute_state：任务执行独有的执行状态{NOT_FOUND : 0，WAITING : 1，RUNNING : 2，CANCELED : 3}
      </li>
      <li>return_state：任务返回独有的任务返回状态[IsCanceled DeserializeFailed Successful
        Unsuccessful]
      </li>
      <li>timeout_row：任务执行超时时更新此列，将对应的 callstack 表行号存于对应的任务行</li>
    </ul>
    <h3>animation表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>input_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_point</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_point</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>frame_info</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录动效的响应时延和完成时延等信息。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>input_time：输入时间点</li>
      <li>start_point：开始时间点</li>
      <li>end_point：结束时间点</li>
      <li>frame_info：动效帧信息，格式：<code class="fontColor">实际帧个数:实际帧帧率</code></li>
      <li>name: 当前动效名，eg：<code class="fontColor">H:APP_LIST_FLING, com.taobao.taobao</code></li>
    </ul>
    <h3>dynamic_frame表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>x</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>y</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>width</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>height</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>alpha</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>name</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录动效帧的坐标、分辨率、结束时间等信息。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>x：坐标x</li>
      <li>y：坐标y</li>
      <li>width：宽</li>
      <li>height：高</li>
      <li>alpha：透明度</li>
      <li>name：当前动效帧名字</li>
      <li>end_time：结束时间</li>
    </ul>
    <h3>device_info表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>physical_width</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>physical_height</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>physical_frame_rate</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录设备分辨率和帧率等信息。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>physical_width：设备宽</li>
      <li>physical_height：设备高</li>
      <li>physical_frame_rate：设备帧率</li>
    </ul>
    <h3>device_state表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>brightness</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>bt_state</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>location</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>wifi</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>stream_default</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>voice_call</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>music</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>stream_ring</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>media</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>voice_assistant</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>system</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>alarm</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>notification</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>bt_sco</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>enforced_audible</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>stream_dtmf</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>stream_tts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>accessibility</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>recording</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>stream_all</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录设备屏幕亮度，蓝牙，位置，wifi，音乐，媒体等信息。该表目前暂未被使用。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>brightness：屏幕亮度</li>
      <li>bt_state：蓝牙状态</li>
      <li>location：位置信息</li>
      <li>wifi：无线网络状态</li>
      <li>stream_default: 取自AudioVolumeInfo message的stream_default字段。</li>
      <li>voice_call：语音通话</li>
      <li>music：音乐播放</li>
      <li>stream_ring: 取自AudioVolumeInfo message的stream_ring字段。</li>
      <li>media：多媒体</li>
      <li>voice_assistant：语音助手</li>
      <li>system：系统</li>
      <li>alarm：闹钟</li>
      <li>notification：消息通知</li>
      <li>bt_sco：蓝牙语音</li>
      <li>enforced_audible: 取自AudioVolumeInfo message的enforced_audible字段</li>
      <li>stream_dtmf: 取自AudioVolumeInfo message的stream_dtmf字段</li>
      <li>stream_tts: 取自AudioVolumeInfo message的stream_tts字段</li>
      <li>accessibility：访问权限</li>
      <li>recording：录音</li>
      <li>stream_all: 取自AudioVolumeInfo message的stream_all字段</li>
    </ul>
    <h3>trace_config表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>trace_source</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>key</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>value</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      该表记录trace数据源，proto的事件-plugin与其process_name（目前只有HisysEvent事件在用）。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>trace_source：事件源</li>
      <li>key：事件需要关注的信息名</li>
      <li>value：事件需要关注的信息名对应的信息值</li>
    </ul>
    <h3>memory_ashmem表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>adj</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>fd</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ashmem_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>pss</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ashmem_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ref_count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>purged</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>flag</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      该表记录trace数据源/proc/purgeable_ashmem_trigger，proto的事件-plugin与其process_name（目前只有HisysEvent事件在用）。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：时间戳</li>
      <li>ipid：内部进程号</li>
      <li>adj: purgeable_ashmem_trigger中adj</li>
      <li>fd：共享内存文件描述符</li>
      <li>ashmem_name_id：共享内存名</li>
      <li>size：共享内存大小</li>
      <li>pss：PSS内存大小</li>
      <li>ashmem_id：共享内存ID</li>
      <li>time： purgeable_ashmem_trigger中time</li>
      <li>ref_count：引用计数</li>
      <li>purged: purgeable_ashmem_trigger中purged</li>
      <li>flag：去重标记，0表示正常，1表示进程内部重复数据，2表示进程间重复数据</li>
    </ul>
    <h3>memory_dma表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>fd</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ino</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>exp_pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>exp_task_comm_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>buf_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>exp_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>flag</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">
      该表记录trace数据源取/proc/process_dmabuf_info节点，proto的事件-plugin与其process_name（目前只有HisysEvent事件在用）。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：时间戳</li>
      <li>ipid：内部进程号</li>
      <li>fd：dma内存文件描述符</li>
      <li>size：dma内存大小</li>
      <li>ino: process_dmabuf_info中ino列</li>
      <li>exp_pid：申请者的进程号</li>
      <li>exp_task_comm_id：申请者的的线程名，对应data_dict的id</li>
      <li>buf_name_id：dma内存名</li>
      <li>exp_name_id：申请者进程名</li>
      <li>flag：去重标记，0表示正常，1表示进程内部重复数据，2表示进程间重复数据</li>
    </ul>
    <h3>memory_process_gpu表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>gpu_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>all_gpu_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>addr</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>itid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>used_gpu_size</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录trace数据源读取/proc/gpu_memory节点</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：时间戳</li>
      <li>gpu_name_id：gpu内存名称</li>
      <li>all_gpu_size：进程占用gpu总大小</li>
      <li>addr：gpu内存地址</li>
      <li>ipid：内部进程号</li>
      <li>itid：内部线程号</li>
      <li>used_gpu_size：已使用的gpu大小</li>
    </ul>
    <h3>memory_window_gpu表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>window_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>window_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>module_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>category_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>count</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>purgeable_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录trace数据源/sys/kernel/debug/mali0/ctx/$(pidof xxx)_0/mem_profile</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：时间戳</li>
      <li>window_name_id：窗口名</li>
      <li>window_id：窗口id</li>
      <li>module_name_id：模块名</li>
      <li>category_name_id：目录名</li>
      <li>size：内存大小 bytes</li>
      <li>count：内存申请个数</li>
      <li>purgeable_size： 取Total memory对应的字节大小</li>
      <li>ipid: 内部进程号</li>
    </ul>
    <h3>static_initalize表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>call_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>start_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>end_time</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>so_name</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>depth</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了so初始化相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ipid：内部进程号</li>
      <li>tid：内部线程号</li>
      <li>call_id：调用者的ID，对应线程表里面的itid</li>
      <li>start_time：阶段开始时间</li>
      <li>end_time：阶段结束时间</li>
      <li>so_name：so文件名称</li>
      <li>depth：泳道图的深度</li>
    </ul>
    <h3>memory_cpu表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>total_size</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了hidumper抓取的cpu的内存大小的相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：数据上报时间戳</li>
      <li>total_size：hidumper取到的cpu内存大小</li>
    </ul>
    <h3>memory_profile表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>channel_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>total_size</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了读取/sys/kernel/debug/mali0/ctx/$(pidof
      xxx)_0/mem_profile节点相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：数据上报时间戳</li>
      <li>channel_id: 取Channel对应的名称,对应data_dict的id</li>
      <li>total_size：取Total memory对应的字节大小</li>
    </ul>
    <h3>memory_rs_image表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ipid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>mem_size</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>surface_name_id</td>
          <td>INT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录了hidumper抓取的界面的内存大小的相关数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识</li>
      <li>ts：数据上报时间戳</li>
      <li>ipid：内部进程号</li>
      <li>mem_size: 取hidumper的size列</li>
      <li>type_id：取hidumper的type列,对于data_dict表中的id</li>
      <li>surface_name_id: 取hidumper的surfaceName列</li>
    </ul>
    <h3>hisys_all_event表</h3>
    <h4>表结构</h4>
    <table class="fontColor">
      <thead>
        <tr>
          <th class="fontColor">Columns Name</th>
          <th class="fontColor">SQL TYPE</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>domain_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>event_name_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>ts</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>type</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>time_zone</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>pid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>tid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>uid</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>level</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>tag</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>event_id</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>seq</td>
          <td>INT</td>
        </tr>
        <tr>
          <td>info</td>
          <td>TEXT</td>
        </tr>
        <tr>
          <td>contents</td>
          <td>TEXT</td>
        </tr>
      </tbody>
    </table>
    <h4>表描述</h4>
    <p class="fontColor">该表记录所有hisysevent采集到的原始数据。</p>
    <h4>关键字段描述</h4>
    <ul class="fontColor">
      <li>id: 唯一标识一条该表数据</li>
      <li>domain_id: 对应原始数据中的domain_字段在data_dict表中的索引。</li>
      <li>event_name_id: 对应原始数据中name_字段在data_dict表中的索引。</li>
      <li>ts: 对应原始数据中time_(ms)字段转化成ns</li>
      <li>type: 对应原始数据中type_字段</li>
      <li>time_zone: 对应原始数据中tz_字段</li>
      <li>pid: 进程号，对应原始数据中的pid_</li>
      <li>tid: 线程号, 对应原始数据中tid_</li>
      <li>uid: 对应原始数据中uid_</li>
      <li>level: 对应原始数据中level_</li>
      <li>tag: 对应原始数据中tag_</li>
      <li>event_id: 对应原始数据id_</li>
      <li>seq: 对应原始数据中seq_</li>
      <li>info: 对应原数据中info_字段</li>
      <li>contents: 取源数据中除了以上字段外的其他字段，组成新的json数据。</li>
    </ul>
  </div>

  <script>
    window.onload = () => {
      let isDark = getURLParameter('dark');
      let targetId = getURLParameter('targetId');
      let isBack = getURLParameter('isBack');
      if (isDark === 'true') {
        document.getElementById('body').setAttribute('style', 'background-color:#272C34;');
        let header = document.getElementsByClassName('fontColor');
        for (let i = 0; i < header.length; i++) {
          header[i].style.color = '#fff';
        }
        let lightBackGround = document.getElementsByClassName('light');
        for (let i = 0; i < lightBackGround.length; i++) {
          lightBackGround[i].style.backgroundColor = '#32373F';
        }
      }
      function getURLParameter(name) {
        return (new URL(document.location)).searchParams.get(name);
      }

      if (targetId !== null) {
        let targetElement = document.getElementById(targetId);
        targetElement.scrollIntoView({ behavior: 'smooth' });
      }
    };
  </script>
</body>

</html>